Skip to content

feat(direnv): nix-direnv で devShell を自動有効化する#155

Closed
nkoji21 wants to merge 1 commit into
mainfrom
feat/nix-direnv
Closed

feat(direnv): nix-direnv で devShell を自動有効化する#155
nkoji21 wants to merge 1 commit into
mainfrom
feat/nix-direnv

Conversation

@nkoji21

@nkoji21 nkoji21 commented Jun 16, 2026

Copy link
Copy Markdown
Owner

Summary

CPP-Module で導入する Nix flake の devShell を、ディレクトリに入った
だけで自動有効化したい。そのための direnv + nix-direnv を整える。
これまで手元に direnv が無く、入れても hook も無い状態だったため、
宣言的に再現できる形でまとめる。

Changes

  • direnv 本体を aqua で管理。1ツール1ファイル規約に従い
    aqua/imports/direnv.yaml に切り出し、aqua-checksums.json
    checksum を記録(require_checksum: true 準拠)。
  • direnv/direnvrc: nix-direnv を checksum 固定の source_url で読み込む。
    global に置くことで各リポジトリの .envrcuse flake の1行で済む。
  • Brewfile: bash を追加。nix-direnv は bash 4.4+ を要求するが
    macOS 同梱は 3.2 のため(brew の 5.x を PATH 前方で優先させる)。
  • .zshrc: プラグイン節に eval "$(direnv hook zsh)" を追加。
  • install.sh: ~/.config/direnv/direnvrc の symlink 作成を追加。

Notes

  • 動作確認済み: CPP-Module に入ると devShell が自動ロードされ、
    c++ が Nix の clang 19.1.7(システムの Apple clang ではない)を
    指し、make / lefthook も devShell 由来になる。nix-direnv の
    キャッシュ(Renewed cache)も確認。
  • bash インストール後に新しいシェルを開くと hook が有効になる。

Nix flake の devShell をディレクトリ移動で自動有効化するため direnv を
導入する。direnv 本体は aqua で管理(1ツール1ファイル規約に従い
imports/direnv.yaml に切り出し、checksum も記録)。nix-direnv は
checksum 固定の source_url で direnvrc から読み込み、評価結果をキャッシュ
して2回目以降を高速化する。nix-direnv は bash 4.4+ を要求するため
Brewfile に bash を追加(macOS 同梱は 3.2)。zsh フックは .zshrc の
プラグイン節に追加し、install.sh に direnvrc の symlink を足す。
@nkoji21

nkoji21 commented Jun 18, 2026

Copy link
Copy Markdown
Owner Author

CPP-Module の devShell 自動有効化が目的だが、その1用途のために dotfiles 全体へ aqua / Brewfile(bash) / 手書き direnvrc の3レイヤーを入れるのは過剰。かつ nix-direnv を使うのに Nix の管理機構を使わないねじれ構成になっている。direnv が必要なら home-manager の programs.direnv で一括管理する形(dotfiles の Nix 化込み)を別途検討する。それまでクローズ。

@nkoji21 nkoji21 closed this Jun 18, 2026
@nkoji21 nkoji21 deleted the feat/nix-direnv branch June 18, 2026 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant